<html lang="en"><head>
    <meta charset="UTF-8">
    <title>分工信息</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="description" content="Description">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
    <link rel="stylesheet" href="./css/vue.css">
    <link rel="stylesheet" href="./favicon.ico">
    <style>
      body:not(.ready) {
        overflow-y: auto;
      }
  
      .app-name-link img {
        width: 100px;
      }
  
      get::before {
        background-color: #409eff;
        display: inline-block;
        content: 'GET';
        padding: 0 5px;
        color: #fff;
        line-height: 1.5em;
      }
  
      post::before {
        background-color: #67c23a;
        display: inline-block;
        content: 'POST';
        padding: 0 5px;
        color: #fff;
        line-height: 1.5em;
      }
  
      put::before {
        background-color: #e6a23c;
        display: inline-block;
        content: 'PUT';
        padding: 0 5px;
        color: #fff;
        line-height: 1.5em;
      }
  
      idelete::before {
        background-color: #f56c6c;
        display: inline-block;
        content: 'DELETE';
        padding: 0 5px;
        color: #fff;
        line-height: 1.5em;
      }
  
      .vue {
        background: #f1f2f3;
        padding: 0 5px;
        border-radius: 5px;
        border: 1px solid #41b883;
        /* color: #fff; */
      }
  
      .el {
        background: #f1f2f3;
        border: 1px solid #409eff;
        padding: 0 5px;
        border-radius: 5px;
        /* color: #fff; */
      }
  
      .vite {
        background: #f1f2f3;
        padding: 0 5px;
        border-radius: 5px;
        border: 1px solid #a666fe;
        /* color: #fff; */
      }
      .python {
        background: #f1f2f3;
        padding: 0 5px;
        border-radius: 5px;
        border: 1px solid #3772a2;
        /* color: #fff; */
      }
      .mysql {
        background: #f1f2f3;
        padding: 0 5px;
        border-radius: 5px;
        border: 1px solid #3e6e93;
        /* color: #fff; */
      }
  
      .vite img, .vue img, .el img, .python img, .mysql img {
        height: .8em;
        margin-right: 3px;
        vertical-align: middle;
      }
    </style>
  <style type="text/css">.docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:0;right:0;overflow:visible;padding:.65em .8em;border:0;border-radius:0;outline:0;font-size:1em;background:grey;background:var(--theme-color,grey);color:#fff;opacity:0}.docsify-copy-code-button span{border-radius:3px;background:inherit;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error,.docsify-copy-code-button.success .success{right:100%;opacity:1;-webkit-transform:translate(-115%,-50%);transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}</style></head>
  
  <body data-page="./README.md" class="ready sticky">
    <main><button class="sidebar-toggle" aria-label="Menu"><div class="sidebar-toggle-button"><span></span><span></span><span></span></div></button><aside class="sidebar"><h1 class="app-name"><a class="app-name-link" data-nosearch="" href="/"><img alt="易千图书馆" src="./img/logo.png"></a></h1><div class="sidebar-nav"><ul><li class="active"><a class="section-link" href="#/?id=%e5%88%86%e5%b7%a5%e4%bf%a1%e6%81%af" title="分工信息">分工信息</a></li><li><a class="section-link" href="#/?id=%e6%9e%b6%e6%9e%84%e8%ae%be%e8%ae%a1" title="架构设计">架构设计</a></li><ul><li><a class="section-link" href="#/?id=%e6%8a%80%e6%9c%af%e6%a0%88" title="技术栈">技术栈</a></li><li><a class="section-link" href="#/?id=%e6%95%b0%e6%8d%ae%e8%a1%a8%e8%ae%be%e8%ae%a1" title="数据表设计">数据表设计</a></li><ul><li><a class="section-link" href="#/?id=%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af%e8%a1%a8-users" title="用户信息表 users">用户信息表 users</a></li><li><a class="section-link" href="#/?id=%e4%b9%a6%e7%b1%8d%e4%bf%a1%e6%81%af%e8%a1%a8-books" title="书籍信息表 books">书籍信息表 books</a></li><li><a class="section-link" href="#/?id=%e5%80%9f%e9%98%85%e8%ae%b0%e5%bd%95%e4%bf%a1%e6%81%af%e8%a1%a8-records" title="借阅记录信息表 records">借阅记录信息表 records</a></li></ul></ul><li><a class="section-link" href="#/?id=%e5%89%8d%e7%ab%af%e9%a1%b5%e9%9d%a2%e8%ae%be%e8%ae%a1" title="前端页面设计">前端页面设计</a></li><ul><li><a class="section-link" href="#/?id=%e5%9f%ba%e6%9c%ac%e4%bf%a1%e6%81%af" title="基本信息">基本信息</a></li><li><a class="section-link" href="#/?id=%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84" title="目录结构">目录结构</a></li><li><a class="section-link" href="#/?id=%e9%a6%96%e9%a1%b5" title="首页">首页</a></li><li><a class="section-link" href="#/?id=%e7%99%bb%e5%bd%95%e9%a1%b5" title="登录页">登录页</a></li><li><a class="section-link" href="#/?id=%e4%b8%aa%e4%ba%ba%e4%b8%ad%e5%bf%83" title="个人中心">个人中心</a></li><li><a class="section-link" href="#/?id=%e5%90%8e%e5%8f%b0" title="后台">后台</a></li></ul><li><a class="section-link" href="#/?id=%e6%8e%a5%e5%8f%a3%e8%af%b4%e6%98%8e" title="接口说明">接口说明</a></li><ul><li><a class="section-link" href="#/?id=%e5%9f%ba%e6%9c%ac%e4%bf%a1%e6%81%af-1" title="基本信息">基本信息</a></li><li><a class="section-link" href="#/?id=%e5%85%a8%e5%b1%80%e7%8a%b6%e6%80%81%e7%a0%81" title="全局状态码">全局状态码</a></li><li><a class="section-link" href="#/?id=%e7%94%a8%e6%88%b7%e7%9b%b8%e5%85%b3" title="用户相关">用户相关</a></li><ul><li><a class="section-link" href="#/?id=-%e6%b3%a8%e5%86%8c%e6%b7%bb%e5%8a%a0%e7%94%a8%e6%88%b7" title=" 注册/添加用户"><post></post> 注册/添加用户</a></li><li><a class="section-link" href="#/?id=-%e7%99%bb%e5%bd%95" title=" 登录"><post></post> 登录</a></li><li><a class="section-link" href="#/?id=-%e5%88%a0%e9%99%a4%e6%b3%a8%e9%94%80" title=" 删除/注销"><idelete></idelete> 删除/注销</a></li><li><a class="section-link" href="#/?id=-%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8d%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af" title=" 获取当前用户信息"><get></get> 获取当前用户信息</a></li><li><a class="section-link" href="#/?id=-%e6%9f%a5%e8%af%a2%e7%94%a8%e6%88%b7" title=" 查询用户"><get></get> 查询用户</a></li><li><a class="section-link" href="#/?id=-%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af" title=" 修改用户信息"><put></put> 修改用户信息</a></li><li><a class="section-link" href="#/?id=-%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e5%af%86%e7%a0%81" title=" 修改用户密码"><put></put> 修改用户密码</a></li></ul><li><a class="section-link" href="#/?id=%e4%b9%a6%e7%b1%8d%e7%9b%b8%e5%85%b3" title="书籍相关">书籍相关</a></li><ul><li><a class="section-link" href="#/?id=-%e6%9f%a5%e8%af%a2%e4%b9%a6%e7%b1%8d" title=" 查询书籍"><get></get> 查询书籍</a></li><li><a class="section-link" href="#/?id=-%e6%b7%bb%e5%8a%a0%e4%b9%a6%e7%b1%8d" title=" 添加书籍"><post></post> 添加书籍</a></li><li><a class="section-link" href="#/?id=-%e5%88%a0%e9%99%a4%e4%b9%a6%e7%b1%8d" title=" 删除书籍"><idelete></idelete> 删除书籍</a></li><li><a class="section-link" href="#/?id=-%e4%bf%ae%e6%94%b9%e4%b9%a6%e7%b1%8d" title=" 修改书籍"><put></put> 修改书籍</a></li></ul><li><a class="section-link" href="#/?id=%e5%80%9f%e9%98%85%e8%ae%b0%e5%bd%95%e7%9b%b8%e5%85%b3" title="借阅记录相关">借阅记录相关</a></li><ul><li><a class="section-link" href="#/?id=-%e6%9f%a5%e8%af%a2%e8%ae%b0%e5%bd%95" title=" 查询记录"><get></get> 查询记录</a></li><li><a class="section-link" href="#/?id=-%e5%80%9f%e9%98%85%e5%9b%be%e4%b9%a6" title=" 借阅图书"><post></post> 借阅图书</a></li><li><a class="section-link" href="#/?id=-%e5%88%a0%e9%99%a4%e8%ae%b0%e5%bd%95" title=" 删除记录"><idelete></idelete> 删除记录</a></li><li><a class="section-link" href="#/?id=-%e5%bd%92%e8%bf%98%e5%9b%be%e4%b9%a6" title=" 归还图书"><put></put> 归还图书</a></li></ul></ul></ul></div></aside><section class="content"><article class="markdown-section" id="main"><h1 style="text-align: center;">易千图书馆项目文档</h1>
  
  <h2 id="分工信息"><a href="#/?id=%e5%88%86%e5%b7%a5%e4%bf%a1%e6%81%af" data-id="分工信息" class="anchor"><span>分工信息</span></a></h2><ul><li>前端：<ol><li>设计页面并用代码呈现成网页</li><li>设计接口，编写接口文档</li><li>按照接口文档编写前后端交互逻辑代码，将后端返回的数据渲染到页面中</li><li>利用Mock数据进行调试</li></ol></li><li>后端：<ol><li>设计数据库，数据表</li><li>设计接口，编写接口文档</li><li>按照接口文档编写接口，处理前端请求，检索数据库，给前端返回相应的数据</li><li>利用Postman等工具对接口进行调试</li></ol></li></ul><h2 id="架构设计"><a href="#/?id=%e6%9e%b6%e6%9e%84%e8%ae%be%e8%ae%a1" data-id="架构设计" class="anchor"><span>架构设计</span></a></h2><h3 id="技术栈"><a href="#/?id=%e6%8a%80%e6%9c%af%e6%a0%88" data-id="技术栈" class="anchor"><span>技术栈</span></a></h3><ul><li><strong>前端：</strong><ul><li>前台：<span class="vue"><img src="https://cn.vuejs.org/images/logo.svg">Vue2</span> + <span class="el"><img src="https://element.eleme.cn/favicon.ico">ElementUI</span> </li><li>后台：<span class="vite"><img src="https://vitejs.cn/logo.svg">Vite</span> + <span class="vue"><img src="https://cn.vuejs.org/images/logo.svg">Vue3</span> + <span class="el"><img src="https://element-plus.org/images/element-plus-logo-small.svg">Element-Plus</span></li></ul></li><li><strong>后端：</strong> <span class="python"><img src="https://www.python.org/static/favicon.ico">Python</span><ul><li>需要安装的模块：<code>jwt</code>，<code>flask</code>，<code>sqlalchemy</code>，<code>mysql-connector</code> 等。</li></ul></li><li><strong>数据库：</strong> <span class="mysql"><img src="https://labs.mysql.com/common/themes/sakila/favicon.ico">MySQL</span></li></ul><h3 id="数据表设计"><a href="#/?id=%e6%95%b0%e6%8d%ae%e8%a1%a8%e8%ae%be%e8%ae%a1" data-id="数据表设计" class="anchor"><span>数据表设计</span></a></h3><h4 id="用户信息表-users"><a href="#/?id=%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af%e8%a1%a8-users" data-id="用户信息表-users" class="anchor"><span>用户信息表 users</span></a></h4><ul><li>ID <code>id</code>：无符号整型，自增主键。在后端程序内部实际地标识用户。</li><li>用户组 <code>group</code>：无符号整型，范围 0～2，0 表示管理员，1 表示普通用户，2 表示禁用的用户。</li><li>邮箱 <code>email</code>：字符串，在外部使用邮箱作为 ID 唯一地标识一位用户。</li><li>密码 <code>passwd</code>：字符串，存储密码的哈希值。密码需要满足设定的安全策略。</li><li>学号 <code>stuid</code>：字符串，12 位纯数字学号。</li><li>姓名 <code>name</code>：字符串，10 以内字符。</li><li>性别 <code>gender</code>：无符号整型，范围 0～3，0 表示未知，1 为男，2 为女，<del>3 为其他</del>。</li><li>年龄 <code>age</code>：无符号整型，范围 0～100，0 表示未知，</li><li>自我介绍 <code>bio</code>：字符串，200 字符以内。</li></ul><h4 id="书籍信息表-books"><a href="#/?id=%e4%b9%a6%e7%b1%8d%e4%bf%a1%e6%81%af%e8%a1%a8-books" data-id="书籍信息表-books" class="anchor"><span>书籍信息表 books</span></a></h4><ul><li>ID <code>id</code>：无符号整型，自增主键。在后端程序内部实际地标识书籍。</li><li>书名 <code>name</code>：字符串，50 以内字符。</li><li>原作者 <code>author</code>：字符串数组。包含所有原作者。</li><li>译者 <code>transer</code>：字符串数组。包含所有译者。</li><li>ISBN <code>isbn</code>：字符串。13 位纯数字。在外部使用 ISBN 唯一地标识一本书。</li><li>出版社 <code>press</code>：字符串。20 以内字符。</li><li>现存数量 <code>existingNum</code>：无符号整型，范围 0～100。</li><li>总数量 <code>totalNum</code>：无符号整型，范围 0～100。</li></ul><h4 id="借阅记录信息表-records"><a href="#/?id=%e5%80%9f%e9%98%85%e8%ae%b0%e5%bd%95%e4%bf%a1%e6%81%af%e8%a1%a8-records" data-id="借阅记录信息表-records" class="anchor"><span>借阅记录信息表 records</span></a></h4><ul><li>ID <code>id</code>：无符号整型，自增主键。</li><li>借阅用户 ID <code>userId</code>：无符号整型，对应「用户信息」表中用户的 ID。</li><li>借阅书籍 ID <code>bookId</code>：无符号整型，对应「书籍信息」表中书籍的 ID。</li><li>借阅时间 <code>borrowDate</code>：Unix 时间戳，借阅的时间。</li><li>归还时间 <code>returnDate</code>：Unix 时间戳，归还的时间。</li><li>归还状态 <code>returned</code>：0 表示尚未归还，1 表示已归还。</li></ul><h2 id="前端页面设计"><a href="#/?id=%e5%89%8d%e7%ab%af%e9%a1%b5%e9%9d%a2%e8%ae%be%e8%ae%a1" data-id="前端页面设计" class="anchor"><span>前端页面设计</span></a></h2><h3 id="基本信息"><a href="#/?id=%e5%9f%ba%e6%9c%ac%e4%bf%a1%e6%81%af" data-id="基本信息" class="anchor"><span>基本信息</span></a></h3><ul><li>baseUrl: <a href="http://127.0.0.1/" target="_blank" rel="noopener">http://127.0.0.1/</a></li></ul><h3 id="目录结构"><a href="#/?id=%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84" data-id="目录结构" class="anchor"><span>目录结构</span></a></h3><pre v-pre="" data-lang="bash"><code class="lang-bash">public
  │  favicon.ico
  │  index.html
  │  login.html
  │  user.html
  ├─admin
  │  │  favicon.ico
  │  │  index.html
  │  └─assets
  │          Books.js
  │          Home.js
  │          index.css
  │          index.js
  │          index2.js
  │          logo.png
  │          plugin-vue_export-helper.js
  │          Records.js
  │          Users.js
  │          vendor.js
  ├─css
  │      element.css
  │      index.css
  │      login.css
  │      reset.css
  │      user.css
  ├─fonts
  │      element-icons.ttf
  │      element-icons.woff
  ├─img
  │      check.svg
  │      left.svg
  │      logo.png
  │      right.svg
  │      title-img.png
  ├─js
  │      axios.js
  │      element.js
  │      loginInfo.js
  │      multiavatar.js
  │      requestConfig.js
  │      vue.js
  └─mock
          index.js
          mock.js</code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre><h3 id="首页"><a href="#/?id=%e9%a6%96%e9%a1%b5" data-id="首页" class="anchor"><span>首页</span></a></h3><ul><li>描述：网站首页</li></ul><ul><li>地址：/index.html</li></ul><h3 id="登录页"><a href="#/?id=%e7%99%bb%e5%bd%95%e9%a1%b5" data-id="登录页" class="anchor"><span>登录页</span></a></h3><ul><li>描述：用户登录，新用户注册页面</li></ul><ul><li>地址：/login.html</li></ul><h3 id="个人中心"><a href="#/?id=%e4%b8%aa%e4%ba%ba%e4%b8%ad%e5%bf%83" data-id="个人中心" class="anchor"><span>个人中心</span></a></h3><ul><li>描述：查询个人借阅记录，修改个人信息，修改密码，注销页面</li></ul><ul><li>地址：/user.html</li></ul><h3 id="后台"><a href="#/?id=%e5%90%8e%e5%8f%b0" data-id="后台" class="anchor"><span>后台</span></a></h3><ul><li>描述：管理面板（单页面应用）<ul><li>/home：个人中心</li><li>/users：用户管理</li><li>/books：图书管理</li><li>/records：借阅记录管理</li></ul></li></ul><ul><li>地址：/admin/index.html</li></ul><h2 id="接口说明"><a href="#/?id=%e6%8e%a5%e5%8f%a3%e8%af%b4%e6%98%8e" data-id="接口说明" class="anchor"><span>接口说明</span></a></h2><h3 id="基本信息-1"><a href="#/?id=%e5%9f%ba%e6%9c%ac%e4%bf%a1%e6%81%af-1" data-id="基本信息-1" class="anchor"><span>基本信息</span></a></h3><ul><li>基础路径（baseUrl）：<code>http://127.0.0.1/api</code></li><li>后端返回数据参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>status</td>
  <td>是</td>
  <td>Number</td>
  <td>状态码</td>
  </tr>
  <tr>
  <td>data</td>
  <td></td>
  <td>Array, Object</td>
  <td>数据</td>
  </tr>
  <tr>
  <td>msg</td>
  <td>是</td>
  <td>String</td>
  <td>描述信息</td>
  </tr>
  </tbody></table>
  <ul><li><p>后端返回数据示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>|<span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"操作成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h3 id="全局状态码"><a href="#/?id=%e5%85%a8%e5%b1%80%e7%8a%b6%e6%80%81%e7%a0%81" data-id="全局状态码" class="anchor"><span>全局状态码</span></a></h3><table>
  <thead>
  <tr>
  <th>状态码</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>200</td>
  <td>操作成功</td>
  </tr>
  <tr>
  <td>201</td>
  <td>创建成功</td>
  </tr>
  <tr>
  <td>303</td>
  <td>重定向</td>
  </tr>
  <tr>
  <td>400</td>
  <td>参数列表错误（缺少，格式不匹配等）</td>
  </tr>
  <tr>
  <td>401</td>
  <td>没有权限访问</td>
  </tr>
  <tr>
  <td>500</td>
  <td>服务器内部发生错误</td>
  </tr>
  </tbody></table>
  <h3 id="用户相关"><a href="#/?id=%e7%94%a8%e6%88%b7%e7%9b%b8%e5%85%b3" data-id="用户相关" class="anchor"><span>用户相关</span></a></h3><h4 id="-注册添加用户"><a href="#/?id=-%e6%b3%a8%e5%86%8c%e6%b7%bb%e5%8a%a0%e7%94%a8%e6%88%b7" data-id="-注册添加用户" class="anchor"><span><post></post> 注册/添加用户</span></a></h4><ul><li>描述：新用户注册，管理员添加用户</li><li>请求地址：<code>/users</code></li><li>请求方式：POST</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td></td>
  <td>如果请求参数中有userGroup属性请验证是否已登录</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userEmail</td>
  <td>是</td>
  <td>String</td>
  <td>邮箱（账号）</td>
  </tr>
  <tr>
  <td>userPwd</td>
  <td>是</td>
  <td>String</td>
  <td>密码</td>
  </tr>
  <tr>
  <td>userStuId</td>
  <td>是</td>
  <td>String</td>
  <td>学号</td>
  </tr>
  <tr>
  <td>userName</td>
  <td>是</td>
  <td>String</td>
  <td>姓名</td>
  </tr>
  <tr>
  <td>userGender</td>
  <td>是</td>
  <td>Number</td>
  <td>性别，0 表示未知，1 为男，2 为女</td>
  </tr>
  <tr>
  <td>userAge</td>
  <td>是</td>
  <td>Number</td>
  <td>年龄</td>
  </tr>
  <tr>
  <td>userBio</td>
  <td>是</td>
  <td>String</td>
  <td>简介</td>
  </tr>
  <tr>
  <td>userGroup</td>
  <td></td>
  <td>Number</td>
  <td>0 表示管理员，1 表示普通用户，2 表示禁用的用户，一般管理员添加用户时才会传递该参数</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
      <span class="token property">"userPwd"</span><span class="token operator">:</span> <span class="token string">"123456"</span><span class="token punctuation">,</span>
      <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
      <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
      <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
      <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
      <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          <span class="token property">"userId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
          <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
          <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
          <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
          <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
          <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
          <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
          <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
      <span class="token punctuation">}</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"注册成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"注册失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-登录"><a href="#/?id=-%e7%99%bb%e5%bd%95" data-id="-登录" class="anchor"><span><post></post> 登录</span></a></h4><ul><li>描述：用户登录，登录成功后后端生成 token 并返回</li><li>请求地址：<code>/token</code></li><li>请求方式：POST</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userEmail</td>
  <td>是</td>
  <td>String</td>
  <td>账号</td>
  </tr>
  <tr>
  <td>userPwd</td>
  <td>是</td>
  <td>String</td>
  <td>密码</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
      <span class="token property">"userPwd"</span><span class="token operator">:</span> <span class="token string">"123456"</span><span class="token punctuation">,</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          token<span class="token operator">:</span> <span class="token string">"XXX"</span>
      <span class="token punctuation">}</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"登录成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"用户名或密码错误"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-删除注销"><a href="#/?id=-%e5%88%a0%e9%99%a4%e6%b3%a8%e9%94%80" data-id="-删除注销" class="anchor"><span><idelete></idelete> 删除/注销</span></a></h4><ul><li>描述：用户自主注销，管理员删除用户</li><li>请求地址：<code>/users/{userId}</code></li><li>请求方式：DELETE</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>删除操作必须携带 token</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userId</td>
  <td>是</td>
  <td>Number</td>
  <td>要删除的用户的 ID</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-获取当前用户信息"><a href="#/?id=-%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8d%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af" data-id="-获取当前用户信息" class="anchor"><span><get></get> 获取当前用户信息</span></a></h4><ul><li>描述：获取当前登录的用户的信息</li><li>请求地址：<code>/users/self</code></li><li>请求方式：GET</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>获取用户信息必须携带token，按照token返回当前用户的信息</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"> <span class="token punctuation">{</span>
       <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
       <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
           <span class="token property">"userId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
           <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
           <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
           <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
           <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
           <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
           <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
           <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
       <span class="token punctuation">}</span>
       <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取成功"</span>
   <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-查询用户"><a href="#/?id=-%e6%9f%a5%e8%af%a2%e7%94%a8%e6%88%b7" data-id="-查询用户" class="anchor"><span><get></get> 查询用户</span></a></h4><ul><li>描述：按照条件查询用户，以分页的形式返回数据</li><li>请求地址：<code>/users?name={name}&amp;gender={gender}&amp;email={email}&amp;stuId={stuId}&amp;age={age}&amp;group={group}&amp;page={page}&amp;page-size={page-size}</code></li><li>请求方式：GET</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>获取用户信息必须携带token，非管理员只能获取自己的信息</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>name</td>
  <td></td>
  <td>String</td>
  <td>用户名</td>
  </tr>
  <tr>
  <td>gender</td>
  <td></td>
  <td>Number</td>
  <td>性别</td>
  </tr>
  <tr>
  <td>email</td>
  <td></td>
  <td>String</td>
  <td>账号</td>
  </tr>
  <tr>
  <td>stuId</td>
  <td></td>
  <td>String</td>
  <td>学号</td>
  </tr>
  <tr>
  <td>age</td>
  <td></td>
  <td>Number</td>
  <td>年龄</td>
  </tr>
  <tr>
  <td>group</td>
  <td></td>
  <td>Number</td>
  <td>用户组</td>
  </tr>
  <tr>
  <td>page</td>
  <td></td>
  <td>Number</td>
  <td>第几页，默认第1页</td>
  </tr>
  <tr>
  <td>page-size</td>
  <td></td>
  <td>Number</td>
  <td>每页显示几条内容，默认10条</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          <span class="token property">"page"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
          <span class="token property">"page-size"</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
          <span class="token property">"total-count"</span><span class="token operator">:</span> <span class="token number">125</span><span class="token punctuation">,</span> <span class="token comment">// 匹配的查询结果数量</span>
          <span class="token property">"total-page"</span><span class="token operator">:</span> <span class="token number">13</span><span class="token punctuation">,</span> <span class="token comment">// 一共有多少页</span>
          <span class="token property">"users"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"userId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
                  <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
                  <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
                  <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
                  <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
                  <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
                  <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
                  <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
              <span class="token punctuation">}</span><span class="token punctuation">,</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"userId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
                  <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
                  <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
                  <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
                  <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
                  <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
                  <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
                  <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
              <span class="token punctuation">}</span>
          <span class="token punctuation">]</span>
      <span class="token punctuation">}</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-修改用户信息"><a href="#/?id=-%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af" data-id="-修改用户信息" class="anchor"><span><put></put> 修改用户信息</span></a></h4><ul><li>描述：修改除密码以外的用户信息</li><li>请求地址：<code>/users/{userId}</code></li><li>请求方式：PUT</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>修改信息时必须是已登录状态，若要修改userGroup属性必须是管理员</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userId</td>
  <td>是</td>
  <td>Number</td>
  <td>要修改信息的用户的 ID</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userEmail</td>
  <td>是</td>
  <td>String</td>
  <td>邮箱（账号）</td>
  </tr>
  <tr>
  <td>userStuId</td>
  <td>是</td>
  <td>String</td>
  <td>学号</td>
  </tr>
  <tr>
  <td>userName</td>
  <td>是</td>
  <td>String</td>
  <td>姓名</td>
  </tr>
  <tr>
  <td>userGender</td>
  <td>是</td>
  <td>Number</td>
  <td>性别，0 表示未知，1 为男，2 为女</td>
  </tr>
  <tr>
  <td>userAge</td>
  <td>是</td>
  <td>Number</td>
  <td>年龄</td>
  </tr>
  <tr>
  <td>userBio</td>
  <td>是</td>
  <td>String</td>
  <td>简介</td>
  </tr>
  <tr>
  <td>userGroup</td>
  <td></td>
  <td>Number</td>
  <td>普通用户修改自己的信息时不会传递该参数，管理员修改某个用户的信息时必会传递该参数</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
      <span class="token property">"userPwd"</span><span class="token operator">:</span> <span class="token string">"123456"</span><span class="token punctuation">,</span>
      <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
      <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
      <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
      <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
      <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"修改成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"注册失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-修改用户密码"><a href="#/?id=-%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e5%af%86%e7%a0%81" data-id="-修改用户密码" class="anchor"><span><put></put> 修改用户密码</span></a></h4><ul><li>描述：用户修改自己的密码，管理员重置某个用户的密码</li><li>请求地址：<code>/users/{userId}/password</code></li><li>请求方式：PUT</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>修改时必须是已登录状态，非管理员只允许修改自己的密码</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userId</td>
  <td>是</td>
  <td>Number</td>
  <td>要修改密码的用户的 ID</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userPwd</td>
  <td>是</td>
  <td>String</td>
  <td>旧密码，管理员重置某个用户的密码会传递<code>空</code></td>
  </tr>
  <tr>
  <td>userNewPwd</td>
  <td>是</td>
  <td>String</td>
  <td>新密码</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"userPwd"</span><span class="token operator">:</span> <span class="token number">12345</span><span class="token punctuation">,</span>
      <span class="token property">"userNewPwd"</span><span class="token operator">:</span> <span class="token number">456789</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"修改成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"修改失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h3 id="书籍相关"><a href="#/?id=%e4%b9%a6%e7%b1%8d%e7%9b%b8%e5%85%b3" data-id="书籍相关" class="anchor"><span>书籍相关</span></a></h3><h4 id="-查询书籍"><a href="#/?id=-%e6%9f%a5%e8%af%a2%e4%b9%a6%e7%b1%8d" data-id="-查询书籍" class="anchor"><span><get></get> 查询书籍</span></a></h4><ul><li>描述：查询书籍，查询结果以分页的形式展示</li><li>请求地址：<code>/books?name={name}&amp;isbn={isbn}&amp;author={author}&amp;page={page}&amp;page-size={page-size}</code></li><li>请求方式：GET</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>登录后才可以检索</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>name</td>
  <td></td>
  <td>String</td>
  <td>图书名称</td>
  </tr>
  <tr>
  <td>isbn</td>
  <td></td>
  <td>String</td>
  <td>ISBN</td>
  </tr>
  <tr>
  <td>author</td>
  <td></td>
  <td>String</td>
  <td>作者</td>
  </tr>
  <tr>
  <td>page</td>
  <td></td>
  <td>Number</td>
  <td>第几页，默认第1页</td>
  </tr>
  <tr>
  <td>page-size</td>
  <td></td>
  <td>Number</td>
  <td>每页显示几条内容，默认10条</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          <span class="token property">"page"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
          <span class="token property">"page-size"</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
          <span class="token property">"total-count"</span><span class="token operator">:</span> <span class="token number">124</span><span class="token punctuation">,</span> <span class="token comment">// 匹配的查询结果数量</span>
          <span class="token property">"total-page"</span><span class="token operator">:</span> <span class="token number">13</span><span class="token punctuation">,</span> <span class="token comment">// 一共有多少页</span>
          <span class="token property">"books"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"bookId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
                  <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
                  <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span> <span class="token comment">// 总数量</span>
              <span class="token punctuation">}</span><span class="token punctuation">,</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"bookId"</span><span class="token operator">:</span> <span class="token number">456</span><span class="token punctuation">,</span>
                  <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
                  <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span> <span class="token comment">// 总数量</span>
              <span class="token punctuation">}</span>
          <span class="token punctuation">]</span>
      <span class="token punctuation">}</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-添加书籍"><a href="#/?id=-%e6%b7%bb%e5%8a%a0%e4%b9%a6%e7%b1%8d" data-id="-添加书籍" class="anchor"><span><post></post> 添加书籍</span></a></h4><ul><li>描述：新用户注册，管理员添加用户</li><li>请求地址：<code>/books</code></li><li>请求方式：POST</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>只有管理员才可以添加书籍</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>bookName</td>
  <td>是</td>
  <td>String</td>
  <td>图书名称</td>
  </tr>
  <tr>
  <td>bookAuthor</td>
  <td>是</td>
  <td>String</td>
  <td>作者</td>
  </tr>
  <tr>
  <td>bookISBN</td>
  <td>是</td>
  <td>String</td>
  <td>ISBN</td>
  </tr>
  <tr>
  <td>bookPress</td>
  <td>是</td>
  <td>String</td>
  <td>出版社</td>
  </tr>
  <tr>
  <td>bookExistingNumber</td>
  <td>是</td>
  <td>Number</td>
  <td>现存数量</td>
  </tr>
  <tr>
  <td>bookTotalNumber</td>
  <td>是</td>
  <td>Number</td>
  <td>库存总数</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
      <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
      <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
      <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
      <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
      <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span> <span class="token comment">// 总数量</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          <span class="token property">"bookId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
          <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
          <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
          <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
          <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
          <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
          <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span> <span class="token comment">// 总数量</span>
      <span class="token punctuation">}</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"添加成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"添加失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-删除书籍"><a href="#/?id=-%e5%88%a0%e9%99%a4%e4%b9%a6%e7%b1%8d" data-id="-删除书籍" class="anchor"><span><idelete></idelete> 删除书籍</span></a></h4><ul><li>描述：管理员删除某一本书</li><li>请求地址：<code>/books/{bookId}</code></li><li>请求方式：DELETE</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>删除操作必须携带token</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>bookId</td>
  <td>是</td>
  <td>Number</td>
  <td>要删除的图书的ID</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-修改书籍"><a href="#/?id=-%e4%bf%ae%e6%94%b9%e4%b9%a6%e7%b1%8d" data-id="-修改书籍" class="anchor"><span><put></put> 修改书籍</span></a></h4><ul><li>描述：管理员修改某一本书的信息</li><li>请求地址：<code>/books/{bookId}</code></li><li>请求方式：PUT</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>只有管理员才可以修改书籍</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>bookId</td>
  <td>是</td>
  <td>Number</td>
  <td>要修改的图书的 ID</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>bookName</td>
  <td>是</td>
  <td>String</td>
  <td>图书名称</td>
  </tr>
  <tr>
  <td>bookAuthor</td>
  <td>是</td>
  <td>String</td>
  <td>作者</td>
  </tr>
  <tr>
  <td>bookISBN</td>
  <td>是</td>
  <td>String</td>
  <td>ISBN</td>
  </tr>
  <tr>
  <td>bookPress</td>
  <td>是</td>
  <td>String</td>
  <td>出版社</td>
  </tr>
  <tr>
  <td>bookExistingNumber</td>
  <td>是</td>
  <td>Number</td>
  <td>现存数量</td>
  </tr>
  <tr>
  <td>bookTotalNumber</td>
  <td>是</td>
  <td>Number</td>
  <td>库存总数</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
      <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
      <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
      <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
      <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
      <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span> <span class="token comment">// 总数量</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"添加成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"添加失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h3 id="借阅记录相关"><a href="#/?id=%e5%80%9f%e9%98%85%e8%ae%b0%e5%bd%95%e7%9b%b8%e5%85%b3" data-id="借阅记录相关" class="anchor"><span>借阅记录相关</span></a></h3><h4 id="-查询记录"><a href="#/?id=-%e6%9f%a5%e8%af%a2%e8%ae%b0%e5%bd%95" data-id="-查询记录" class="anchor"><span><get></get> 查询记录</span></a></h4><ul><li>描述：查询借阅记录</li><li>请求地址：<code>/records?userId={rcdUserId}&amp;bookId={bookId}&amp;bookName={bookName}&amp;minBorrowDate={minBrrowDate}&amp;maxBorrowDate={maxBorrowDate}&amp;minReturnDate={minReturnDate}&amp;maxReturnDate={maxReturnDate}&amp;status={status}&amp;page={page}&amp;page-size={page-size}</code></li><li>请求方式：GET</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>登录后才可以查询，非管理员只允许查询自己的借阅记录</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>userId</td>
  <td></td>
  <td>Number</td>
  <td>用户ID</td>
  </tr>
  <tr>
  <td>bookId</td>
  <td></td>
  <td>Number</td>
  <td>图书ID</td>
  </tr>
  <tr>
  <td>bookName</td>
  <td></td>
  <td>String</td>
  <td>图书名称</td>
  </tr>
  <tr>
  <td>minBorrowDate</td>
  <td></td>
  <td>Datetime</td>
  <td>最小借阅时间</td>
  </tr>
  <tr>
  <td>maxBorrowDate</td>
  <td></td>
  <td>Datetime</td>
  <td>最大借阅时间</td>
  </tr>
  <tr>
  <td>minReturnDate</td>
  <td></td>
  <td>Datetime</td>
  <td>最小归还时间</td>
  </tr>
  <tr>
  <td>maxReturnDate</td>
  <td></td>
  <td>Datetime</td>
  <td>最大归还时间</td>
  </tr>
  <tr>
  <td>returned</td>
  <td></td>
  <td>Number</td>
  <td>归还状态，0表示尚未归还，1表示已归还</td>
  </tr>
  <tr>
  <td>page</td>
  <td></td>
  <td>Number</td>
  <td>第几页，默认第1页</td>
  </tr>
  <tr>
  <td>page-size</td>
  <td></td>
  <td>Number</td>
  <td>每页显示几条内容，默认10条</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"data"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
          <span class="token property">"page"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
          <span class="token property">"page-size"</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
          <span class="token property">"total-count"</span><span class="token operator">:</span> <span class="token number">124</span><span class="token punctuation">,</span> <span class="token comment">// 匹配的查询结果数量</span>
          <span class="token property">"total-page"</span><span class="token operator">:</span> <span class="token number">13</span><span class="token punctuation">,</span> <span class="token comment">// 一共有多少页</span>
          <span class="token property">"records"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"rcdId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdUserID"</span><span class="token operator">:</span> <span class="token number">123456</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdBookID"</span><span class="token operator">:</span> <span class="token number">752136</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdBorrowDate"</span><span class="token operator">:</span> <span class="token number">1645362141170</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdReturnDate"</span><span class="token operator">:</span> <span class="token number">1645362153685</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdReturned"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token comment">// 归还状态</span>
                  <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
                  <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span> <span class="token comment">// 总数量</span>
                  <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
                  <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
                  <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
                  <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
                  <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
                  <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
                  <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
              <span class="token punctuation">}</span><span class="token punctuation">,</span>
              <span class="token punctuation">{</span>
                  <span class="token property">"rcdId"</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdUserID"</span><span class="token operator">:</span> <span class="token number">123456</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdBookID"</span><span class="token operator">:</span> <span class="token number">752136</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdBorrowDate"</span><span class="token operator">:</span> <span class="token number">1645362141170</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdReturnDate"</span><span class="token operator">:</span> <span class="token number">1645362153685</span><span class="token punctuation">,</span>
                  <span class="token property">"rcdReturned"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token comment">// 归还状态</span>
                  <span class="token property">"bookName"</span><span class="token operator">:</span> <span class="token string">"c++程序设计教程（通用版）（第三版）"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookAuthor"</span><span class="token operator">:</span> <span class="token string">"钱能"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookISBN"</span><span class="token operator">:</span> <span class="token string">"978-7825-1236-789"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookPress"</span><span class="token operator">:</span> <span class="token string">"湖南大学出版社"</span><span class="token punctuation">,</span>
                  <span class="token property">"bookExistingNumber"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 现存总数量</span>
                  <span class="token property">"bookTotalNumber"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span> <span class="token comment">// 总数量</span>
                  <span class="token property">"userEmail"</span><span class="token operator">:</span> <span class="token string">"abc@email.com"</span><span class="token punctuation">,</span>
                  <span class="token property">"userStuId"</span><span class="token operator">:</span> <span class="token string">"202108010500"</span><span class="token punctuation">,</span>
                  <span class="token property">"userName"</span><span class="token operator">:</span> <span class="token string">"张三"</span><span class="token punctuation">,</span>
                  <span class="token property">"userGender"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
                  <span class="token property">"userAge"</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
                  <span class="token property">"userBio"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
                  <span class="token property">"userGroup"</span><span class="token operator">:</span> <span class="token number">1</span>
              <span class="token punctuation">}</span>
          <span class="token punctuation">]</span>
      <span class="token punctuation">}</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"获取失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-借阅图书"><a href="#/?id=-%e5%80%9f%e9%98%85%e5%9b%be%e4%b9%a6" data-id="-借阅图书" class="anchor"><span><post></post> 借阅图书</span></a></h4><ul><li>描述：</li><li>请求地址：<code>/records</code></li><li>请求方式：POST</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>登录后才允许借阅书籍</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>rcdUserID</td>
  <td>是</td>
  <td>Number</td>
  <td>借书人ID</td>
  </tr>
  <tr>
  <td>rcdBookID</td>
  <td>是</td>
  <td>Number</td>
  <td>借阅的书籍ID</td>
  </tr>
  <tr>
  <td>rcdBorrowDate</td>
  <td>是</td>
  <td>Datetime</td>
  <td>借阅时间</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"rcdUserID"</span><span class="token operator">:</span> <span class="token number">123456</span><span class="token punctuation">,</span>
      <span class="token property">"rcdBookID"</span><span class="token operator">:</span> <span class="token number">752136</span><span class="token punctuation">,</span>
      <span class="token property">"rcdBorrowDate"</span><span class="token operator">:</span> <span class="token number">1645362141170</span><span class="token punctuation">,</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"借阅成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"借阅失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-删除记录"><a href="#/?id=-%e5%88%a0%e9%99%a4%e8%ae%b0%e5%bd%95" data-id="-删除记录" class="anchor"><span><idelete></idelete> 删除记录</span></a></h4><ul><li>描述：管理员删除某一个借阅记录</li><li>请求地址：<code>/records/{rcdId}</code></li><li>请求方式：DELETE</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>只有管理员才可以删除借阅记录</td>
  </tr>
  </tbody></table>
  <ul><li>URL参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>rcdId</td>
  <td>是</td>
  <td>Number</td>
  <td>要删除的借阅记录的ID</td>
  </tr>
  </tbody></table>
  <ul><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"删除失败"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul><h4 id="-归还图书"><a href="#/?id=-%e5%bd%92%e8%bf%98%e5%9b%be%e4%b9%a6" data-id="-归还图书" class="anchor"><span><put></put> 归还图书</span></a></h4><ul><li>描述：用户归还某一本书</li><li>请求地址：<code>/records/{rcdId}</code></li><li>请求方式：PUT</li><li>请求头（headers）信息：</li></ul><table>
  <thead>
  <tr>
  <th>键</th>
  <th>值</th>
  <th>必传</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>Content-Type</td>
  <td>application/json</td>
  <td></td>
  <td>请求体类型</td>
  </tr>
  <tr>
  <td>accept</td>
  <td>application/json</td>
  <td></td>
  <td>返回类型</td>
  </tr>
  <tr>
  <td>token</td>
  <td>XXX</td>
  <td>是</td>
  <td>只有登录后才可以操作</td>
  </tr>
  </tbody></table>
  <ul><li>URL 参数</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>rcdId</td>
  <td>是</td>
  <td>Number</td>
  <td>记录ID</td>
  </tr>
  </tbody></table>
  <ul><li>请求参数：</li></ul><table>
  <thead>
  <tr>
  <th>参数名</th>
  <th>必传</th>
  <th>类型</th>
  <th>描述</th>
  </tr>
  </thead>
  <tbody><tr>
  <td>rcdReturnDate</td>
  <td>是</td>
  <td>Datetime</td>
  <td>归还时间</td>
  </tr>
  </tbody></table>
  <ul><li><p>请求示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"rcdReturnDate"</span><span class="token operator">:</span> <span class="token number">1645362153685</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>成功时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"归还成功"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li><li><p>失败时返回示例：</p><pre v-pre="" data-lang="json"><code class="lang-json"><span class="token punctuation">{</span>
      <span class="token property">"status"</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
      <span class="token property">"msg"</span><span class="token operator">:</span> <span class="token string">"归还失败，{具体失败原因}"</span>
  <span class="token punctuation">}</span></code><button class="docsify-copy-code-button"><span class="label">Copy to clipboard</span><span class="error">Error</span><span class="success">Copied</span></button></pre></li></ul></article></section></main>
  
    <script>
      window.$docsify = {
        logo: './img/logo.png',
        name: '易千图书馆',
        repo: ''
      }
    </script>
    <!-- Docsify v4 -->
    <script src="./js/docsify.js"></script>
  
    <script src="./js/docsify-copy-code.js"></script>
    <script src="./js/prism-josn.js"></script>
  
  <script src="//localhost:35729/livereload.js?snipver=1" async="" defer=""></script>
  
  <div style="position: static; display: none; width: 0px; height: 0px; border: none; padding: 0px; margin: 0px;"><div id="trans-tooltip"><div id="tip-left-top" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-left-top.png&quot;);"></div><div id="tip-top" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-top.png&quot;) repeat-x;"></div><div id="tip-right-top" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-right-top.png&quot;);"></div><div id="tip-right" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-right.png&quot;) repeat-y;"></div><div id="tip-right-bottom" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-right-bottom.png&quot;);"></div><div id="tip-bottom" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-bottom.png&quot;) repeat-x;"></div><div id="tip-left-bottom" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-left-bottom.png&quot;);"></div><div id="tip-left" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-left.png&quot;);"></div><div id="trans-content"></div></div><div id="tip-arrow-bottom" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-arrow-bottom.png&quot;);"></div><div id="tip-arrow-top" style="background: url(&quot;chrome-extension://jpjgjbbhaifmiigkopmnpbgcgmigaame/imgs/map/tip-arrow-top.png&quot;);"></div></div><div class="progress" style="opacity: 0; width: 0%;"></div></body></html>